package dao

import (
	"time"
)

// 这是 Goods 的全局公开dao对象，被service层调用!
var GoodsDao = goodsDao{}

// 商品基本信息表
// 这是 goods表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type Goods struct {
	Id           int32     `json:"id" form:"id" v:"id" db:"id"`
	GoodsSn      string    `json:"goods_sn" form:"goods_sn" v:"goods_sn" db:"goods_sn"`             // 商品编号
	Name         string    `json:"name" form:"name" v:"name" db:"name"`                             // 商品名称
	CategoryId   int32     `json:"category_id" form:"category_id" v:"category_id" db:"category_id"` // 商品所属类目ID
	BrandId      int32     `json:"brand_id" form:"brand_id" v:"brand_id" db:"brand_id"`
	Gallery      string    `json:"gallery" form:"gallery" v:"gallery" db:"gallery"`             // 商品宣传图片列表，采用JSON数组格式
	Keywords     string    `json:"keywords" form:"keywords" v:"keywords" db:"keywords"`         // 商品关键字，采用逗号间隔
	Brief        string    `json:"brief" form:"brief" v:"brief" db:"brief"`                     // 商品简介
	IsOnSale     int8      `json:"is_on_sale" form:"is_on_sale" v:"is_on_sale" db:"is_on_sale"` // 是否上架
	SortOrder    int16     `json:"sort_order" form:"sort_order" v:"sort_order" db:"sort_order"`
	PicUrl       string    `json:"pic_url" form:"pic_url" v:"pic_url" db:"pic_url"`                         // 商品页面商品图片
	ShareUrl     string    `json:"share_url" form:"share_url" v:"share_url" db:"share_url"`                 // 商品分享海报
	IsNew        int8      `json:"is_new" form:"is_new" v:"is_new" db:"is_new"`                             // 是否新品首发，如果设置则可以在新品首发页面展示
	IsHot        int8      `json:"is_hot" form:"is_hot" v:"is_hot" db:"is_hot"`                             // 是否人气推荐，如果设置则可以在人气推荐页面展示
	Unit         string    `json:"unit" form:"unit" v:"unit" db:"unit"`                                     // 商品单位，例如件、盒
	CounterPrice float64   `json:"counter_price" form:"counter_price" v:"counter_price" db:"counter_price"` // 专柜价格
	RetailPrice  float64   `json:"retail_price" form:"retail_price" v:"retail_price" db:"retail_price"`     // 零售价格
	Detail       string    `json:"detail" form:"detail" v:"detail" db:"detail"`                             // 商品详细介绍，是富文本格式
	AddTime      time.Time `json:"add_time" form:"add_time" v:"add_time" db:"add_time"`                     // 创建时间
	UpdateTime   time.Time `json:"update_time" form:"update_time" v:"update_time" db:"update_time"`         // 更新时间
	Deleted      int8      `json:"deleted" form:"deleted" v:"deleted" db:"deleted" gm:"deleted"`            // 逻辑删除

}

// 注意:这是 Goods 的私有dao对象，只能在dao层内使用!
type goodsDao struct {
	InsertTemplate func(arg Goods) (int64, error)       //插入一条记录
	UpdateTemplate func(arg Goods) (int64, error)       //更新一条记录
	DeleteTemplate func(id int64) (int64, error)        `args:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (Goods, error)        `args:"id"` //根据传入的主键获取一条记录
	List           func(arg GoodsList) ([]Goods, error) //模糊分页查询
}

/*
// 这是 goods 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type GoodsPostman struct {
id
goods_sn
name
category_id
brand_id
gallery
keywords
brief
is_on_sale
sort_order
pic_url
share_url
is_new
is_hot
unit
counter_price
retail_price
detail
add_time
update_time
deleted

}*/

// 这是 goods 表的批量请求参数
type GoodsReq struct {
	List []Goods `json:"list" form:"list"`
}

// 这是 goodsDao.List()方法的请求参数
type GoodsList struct {
	Page
}
